[slimtensor] Add SizesAndStrides and dimension utility functions for slimtensor usage#16384
Conversation
…slimtensor usage This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
🔗 Helpful Links🧪 See artifacts and rendered test results at hud.pytorch.org/pr/pytorch/executorch/16384
Note: Links to docs will display an error until the docs builds have been completed. ❌ 1 New Failure, 5 Unrelated FailuresAs of commit 48843e7 with merge base 9ba1b5d ( NEW FAILURE - The following job has failed:
BROKEN TRUNK - The following jobs failed but were present on the merge base:👉 Rebase onto the `viable/strict` branch to avoid these failures
UNSTABLE - The following job is marked as unstable, possibly due to flakiness on trunk:
This comment was automatically generated by Dr. CI and updates every 15 minutes. |
This PR needs a
|
…ctions for slimtensor usage" This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
…ctions for slimtensor usage" This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
manuelcandales
left a comment
There was a problem hiding this comment.
don't you need a test_array_ref_util.cpp as well?
…ctions for slimtensor usage" This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
…ctions for slimtensor usage" This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
…ctions for slimtensor usage" This diff adds the `SizesAndStrides` class for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements. **Key components:** 1. **`c10/macros/Macros.h`** - Branch prediction hint macros (`SLIMTENSOR_LIKELY/UNLIKELY`) for optimizing hot paths 2. **`util/ArrayRefUtil.h`** - Re-exports ExecuTorch's `ArrayRef`, `IntArrayRef`, and `makeArrayRef`; adds `toVec()` utility for converting ArrayRef to std::vector 3. **`c10/core/SizesAndStrides.h`** - Packed container for tensor sizes and strides: - Inline storage for tensors up to 5 dimensions (no heap allocation) - Out-of-line heap storage for larger tensors - Full copy/move semantics with proper resource management - Equality operators and iterators - `std::initializer_list` overloads for convenient initialization 4. **`util/SizeUtil.h`** - Size computation utilities: - `compute_numel()` - compute total number of elements - `compute_contiguous_strides()` - compute row-major contiguous strides - `compute_storage_nbytes()` / `compute_storage_nbytes_contiguous()` - compute storage byte requirements Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) [ghstack-poisoned]
946cab4
into
gh/gasoonjia/75/base
…slimtensor usage (#16549) This PR was created by the merge bot to help merge the original PR into the main branch. ghstack PR number: #16384 by @Gasoonjia ^ Please use this as the source of truth for the PR details, comments, and reviews ghstack PR base: https://github.com/pytorch/executorch/tree/gh/gasoonjia/75/base ghstack PR head: https://github.com/pytorch/executorch/tree/gh/gasoonjia/75/head Merge bot PR base: https://github.com/pytorch/executorch/tree/gh/gasoonjia/74/orig Merge bot PR head: https://github.com/pytorch/executorch/tree/gh/gasoonjia/75/orig Differential Revision: [D89749336](https://our.internmc.facebook.com/intern/diff/D89749336/) @diff-train-skip-merge --------- Co-authored-by: gasoonjia <gasoonjia@icloud.com> Co-authored-by: Gasoonjia <gasoonjia@meta.com>
Stack from ghstack (oldest at bottom):
This diff adds the
SizesAndStridesclass for efficiently storing tensor dimension sizes and strides, along with utility functions for computing element counts and storage requirements.Key components:
c10/macros/Macros.h- Branch prediction hint macros (SLIMTENSOR_LIKELY/UNLIKELY) for optimizing hot pathsutil/ArrayRefUtil.h- Re-exports ExecuTorch'sArrayRef,IntArrayRef, andmakeArrayRef; addstoVec()utility for converting ArrayRef to std::vectorc10/core/SizesAndStrides.h- Packed container for tensor sizes and strides:std::initializer_listoverloads for convenient initializationutil/SizeUtil.h- Size computation utilities:compute_numel()- compute total number of elementscompute_contiguous_strides()- compute row-major contiguous stridescompute_storage_nbytes()/compute_storage_nbytes_contiguous()- compute storage byte requirementsDifferential Revision: D89749336